home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / TextEncodingConverter.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  5KB  |  140 lines

  1. /*
  2.      File:        TextEncodingConverter.h
  3.  
  4.      Contains:    Text Encoding Conversion Interfaces.
  5.  
  6.      Version:    Technology:    System 7.1 through System 8
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __TEXTENCODINGCONVERTER__
  19. #define __TEXTENCODINGCONVERTER__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __MIXEDMODE__
  25. #include <MixedMode.h>
  26. #endif
  27. #ifndef __UNICODE__
  28. #include <Unicode.h>
  29. #endif
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34.  
  35. #if PRAGMA_IMPORT_SUPPORTED
  36. #pragma import on
  37. #endif
  38.  
  39. #if PRAGMA_ALIGN_SUPPORTED
  40. #pragma options align=mac68k
  41. #endif
  42.  
  43. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  44. /* converter object reference */
  45. typedef struct OpaqueEncodingConverterRef* EncodingConverterRef;
  46. /* character substitution */
  47. struct CharSubstitution {
  48.     UInt32                             originalChar;
  49.     UInt32                             replacementChar;
  50. };
  51. typedef struct CharSubstitution CharSubstitution;
  52.  
  53. struct CharSubstitutionList {
  54.     ItemCount                         numberOfSubstitutions;
  55.     CharSubstitution                 list[1];
  56. };
  57. typedef struct CharSubstitutionList CharSubstitutionList;
  58.  
  59. /* invalid character lists */
  60. struct InvalidCharRange {
  61.     ByteOffset                         firstCharInRange;
  62.     ByteOffset                         lastCharInRange;
  63. };
  64. typedef struct InvalidCharRange InvalidCharRange;
  65.  
  66. struct InvalidCharRangeList {
  67.     ItemCount                         numberOfRanges;
  68.     InvalidCharRange                 list[1];
  69. };
  70. typedef struct InvalidCharRangeList InvalidCharRangeList;
  71.  
  72. /* encoding conversion options */
  73. struct EncodingOptions {
  74.     UInt16                             sourceflags;
  75.     UInt16                             destflags;
  76.     ItemCount                         maxLineLength;
  77. };
  78. typedef struct EncodingOptions EncodingOptions;
  79.  
  80. #endif
  81. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  82. /* return number of encodings types supported by user's configuraton of the encoding converter */
  83. extern pascal OSStatus CountAvailableTextEncodings(ItemCount *numberOfMappings)
  84.  THREEWORDINLINE(0x303C, 0x021A, 0xABCE);
  85.  
  86. /* fill in an array of type TextEncoding passed in by the user with types of encodings the current configuration of the encoder can handle. */
  87. extern pascal OSStatus GetAvailableTextEncodings(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings)
  88.  THREEWORDINLINE(0x303C, 0x061B, 0xABCE);
  89.  
  90. /* create a converter object with default conversion characteristics */
  91. extern pascal OSStatus NewEncodingConverter(EncodingConverterRef *newEncodingConverter, TextEncoding inputEncoding, TextEncoding outputEncoding)
  92.  THREEWORDINLINE(0x303C, 0x061C, 0xABCE);
  93.  
  94. /* disose and encoding converter object */
  95. extern pascal OSStatus DisposeEncodingConverter(EncodingConverterRef *newEncodingConverter)
  96.  THREEWORDINLINE(0x303C, 0x021D, 0xABCE);
  97.  
  98. /* manage substitution lists */
  99. extern pascal OSStatus SetConverterSubstitutionList(EncodingConverterRef *encodingConverter, CharSubstitutionList *charSubstitutionPtr)
  100.  THREEWORDINLINE(0x303C, 0x041E, 0xABCE);
  101.  
  102. extern pascal OSStatus GetConverterSubstitutionListCount(EncodingConverterRef *encodingConverter, ItemCount *count)
  103.  THREEWORDINLINE(0x303C, 0x041F, 0xABCE);
  104.  
  105. extern pascal OSStatus GetConverterSubstitutionList(EncodingConverterRef *encodingConverter, CharSubstitutionList *charSubstitutionPtr)
  106.  THREEWORDINLINE(0x303C, 0x0220, 0xABCE);
  107.  
  108. /* manage invalid character lists */
  109. extern pascal OSStatus SetConverterInvalidCharRangeList(EncodingConverterRef *encodingConverter, InvalidCharRangeList *invalidCharPtr)
  110.  THREEWORDINLINE(0x303C, 0x0421, 0xABCE);
  111.  
  112. extern pascal OSStatus GetConverterInvalidCharRangeListCount(EncodingConverterRef *encodingConverter, ItemCount *count)
  113.  THREEWORDINLINE(0x303C, 0x0422, 0xABCE);
  114.  
  115. extern pascal OSStatus GetConverterInvalidCharRangeList(EncodingConverterRef *encodingConverter, InvalidCharRangeList *invalidCharPtr)
  116.  THREEWORDINLINE(0x303C, 0x0423, 0xABCE);
  117.  
  118. extern pascal OSStatus ConvertTextEncoding(EncodingConverterRef *encodingConverter, Boolean clearContext, BytePtr *inputText, ByteCount *inputLength, BytePtr outputBuffer, ByteCount outputBufferSize, ByteCount *actualOutputLength)
  119.  THREEWORDINLINE(0x303C, 0x1024, 0xABCE);
  120.  
  121. extern pascal OSStatus ExamineTextEncoding(BytePtr *inputText, ByteCount *inputLength, TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, Boolean *validEncoding)
  122.  THREEWORDINLINE(0x303C, 0x0A25, 0xABCE);
  123.  
  124. #endif
  125.  
  126. #if PRAGMA_ALIGN_SUPPORTED
  127. #pragma options align=reset
  128. #endif
  129.  
  130. #if PRAGMA_IMPORT_SUPPORTED
  131. #pragma import off
  132. #endif
  133.  
  134. #ifdef __cplusplus
  135. }
  136. #endif
  137.  
  138. #endif /* __TEXTENCODINGCONVERTER__ */
  139.  
  140.